// ConsoleApplication13.cpp : Defines the entry point for the console application.

#include "stdafx.h"
#include <iostream>
#include <string>
#include <time.h>
#include <math.h>
#define LUNGCHAR 20
#define NUMCGN 5
using namespace std;

void menu();
void inserisci(char arr_str[][LUNGCHAR]);
void visualizza(char arr_str[][LUNGCHAR]);
void ricerca(char arr_str[][LUNGCHAR], char x[]);
void sostituisci(char arr_str[][LUNGCHAR], char x[], char nuova[]);
void cancella(char arr_str[][LUNGCHAR], int riga);
void ordina(char arr_str[][LUNGCHAR]);

int main()
{
	menu();
	system("pause");
    return 0;
}

void menu()
{
	char x[LUNGCHAR + 1];
	char cognome[NUMCGN][LUNGCHAR];
	char nuova[LUNGCHAR + 1];
	int riga=0;
	int scelta;
	do
	{
		printf("1. Inserisci\n");
		printf("2. Visualizza\n");
		printf("3. Ricerca\n");
		printf("4. Sostituisci\n");
		printf("5. Cancella\n");
		cin >> scelta;
		switch (scelta)
		{
		case 1:
			inserisci(cognome);
			system("pause");
			break;
		case 2:
			visualizza(cognome);
			system("pause");
			break;
		case 3:
			ricerca(cognome, x);
			system("pause");
			break;
		case 4:
			sostituisci(cognome, x, nuova);
			system("pause");
			break;
		case 5:
			cancella(cognome, riga);
			system("pause");
			break;
		case 6:
			ordina(cognome);
		}
	} while (scelta != 0);
}

void inserisci(char arr_str[][LUNGCHAR])
{
	char x[LUNGCHAR];
	int lung;
	for (int j = 0; j < NUMCGN; j++)
	{
		printf("Inserisci la stringa no. %d:\n", j + 1);
		cin >> x;
		lung=strlen(x);
		x[lung] = '\0';
		strcpy_s(arr_str[j], LUNGCHAR + 1, x);
	}
	printf("\n");
}

void visualizza(char arr_str[][LUNGCHAR])
{
	for (int j = 0; j < NUMCGN; j++)
	{
		printf("Elemento no. %d: %s\n", j+1, arr_str[j]);
	}
}

void ricerca(char arr_str[][LUNGCHAR], char x[])
{
	bool trovato = false;
	printf("Inserisci la stringa da cercare\n");
	cin >> x;
	x[strlen(x)] = '\0';
	for (int j = 0; j < NUMCGN && trovato!=true; j++)
	{
		if (strcmp(x, arr_str[j]) == 0)
		{
			printf("La stringa è stata trovata alla riga %d\n", j);
			trovato = true;
		}	
	}
	if (trovato == false)
		printf("Non trovato");
}

void sostituisci(char arr_str[][LUNGCHAR], char x[], char nuova[])
{
	bool trovato = false;
	printf("Inserisci la stringa da sostituire\n");
	cin >> x;
	x[strlen(x)] = '\0';
	printf("Inserisci la nuova stringa\n");
	cin >> nuova;
	nuova[strlen(nuova)] = '\0';
	for (int j = 0; j < NUMCGN && trovato != true; j++)
	{
		if (strcmp(x, arr_str[j]) == 0)
		{
			strcpy_s(arr_str[j], LUNGCHAR, nuova);
			trovato = true;
		}
	}
	if (trovato == false)
		printf("Non trovato");
}

void cancella(char arr_str[][LUNGCHAR], int riga)
{
	printf("Inserisci la riga da cancellare\n");
	cin >> riga;
	arr_str[riga-1][0] = '\0';
}

void ordina(char arr_str[][LUNGCHAR])
{
	char temp[LUNGCHAR];
	for (int j = 0; j < NUMCGN-1; j++)
	{
		for (int i = 0; i < NUMCGN-1-j; i++)
		{
			if ((j + 1 != strlen(arr_str[j])) && (strcmp(arr_str[j], arr_str[j + 1]) == -1))
			{
				strcpy_s(temp, LUNGCHAR, arr_str[j]);
				strcpy_s(arr_str[j], LUNGCHAR, arr_str[j + 1]);
				strcpy_s(arr_str[j + 1], LUNGCHAR, temp);
			}
		}
	}
}